# test02_lambda.py
# 定义一个列表，包含一组数字，将列表中每个数字乘以2
"""
nums = [1, 2, 3, 4, 5]
# new_nums = []
# for item in nums:
#     # print(item * 2)
#     new_nums.append(item * 2)
new_nums = [item*2 for item in nums]

print(new_nums)

# 1.映射
# 使用匿名函数
nums = [1, 2, 3, 4, 5]
# 使用映射的方法将每个元素乘以2
# map(匿名函数, 列表)
# 过程：就是遍历列表，通过匿名函数获取每个元素，然后对元素进行处理
# x 每个元素
# 返回映射对象（可迭代对象）
nums2 = map(lambda x: x*2, nums)
print(list(nums2))
"""
# 2.过滤
# 定义列表，包含一组商品，每个商品格式为字典，字典中包含商品的名称和价格。
# 过滤出价格在2000～4000之间的商品
products = [
    {
        'title': 'iPhone15',
        'price': 5499
    },
    {
        'title': 'RedMi8',
        'price': 2399
    },
    {
        'title': '华为Mate70',
        'price': 6377
    },
    {
        'title': 'VivoX100',
        'price': 3999
    },
]
# new_products = []
# # 遍历列表
# for item in products:
#     # 判断价格是否在2000～4000之间
#     # print(item['title'], item['price'])
#     if 2000 <= item['price'] <= 4000:
#         # print(item)
#         new_products.append(item)
# print(new_products)
# 使用filter函数过滤
# filter(匿名函数, 列表)
# x 代表列表中每个元素
# new_products = filter(lambda x: 2000<=x['price']<=4000, products)
# print(list(new_products))

# 3.对可迭代对象进行排序
# nums = [23, 6, 78, 9, 45]
# new_nums = sorted(nums)
# print(new_nums)

# 对一组商品进行排序
# key 通过匿名函数提供按照哪一项进行排序
# x 列表中每一个元素
new_products = sorted(products, key=lambda x: x['price'])
new_products.reverse()  # 反转
print(new_products)